<template>
  <div id="container">地图</div>
</template>

<script>
import AMapLoader from "@amap/amap-jsapi-loader";
export default {
  methods: {
    initMap() {
      AMapLoader.load({
        key: "fedb2fe87bb1bbaa34d520eef24dbdf2", // 申请好的Web端开发者Key，首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本，缺省时默认为 1.4.15
        plugins: ["AMap.Geocoder"], // 需要使用的的插件列表，如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          let map = new AMap.Map("container", {
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 10, //初始化地图级别
            center: [106.505, 29.5332], //初始化地图中心点位置
          });
          //逆地理编码的方法对象
          var geocoder = new AMap.Geocoder({
            city: "010", //城市设为北京，默认：“全国”
            radius: 1000, //范围，默认：500
          });
          //生成点标记对象
          var marker = new AMap.Marker();
          let that = this; //存储正确的this指向
          function regeoCode(lnglat) {
            map.add(marker); //显示点标记
            marker.setPosition(lnglat);

            geocoder.getAddress(lnglat, function (status, result) {
              if (status === "complete" && result.regeocode) {
                var address = result.regeocode.formattedAddress;
                console.log("位置信息", result);
                that.$emit("update:modelValue", address);
                that.$emit("close-drawer");
              } else {
                console.log("根据经纬度查询地址失败");
              }
            });
          }

          map.on("click", function (e) {
            // document.getElementById("lnglat").value = e.lnglat;
            console.log(e);
            let { lng, lat } = e.lnglat; //点击地图得到经纬度
            regeoCode([lng, lat]);
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },
  },
  mounted() {
    this.initMap();
  },
};
</script>

<style lang="scss" scoped>
#container {
  padding: 0px;
  margin: 0px;
  width: 100%;
  height: 500px;
}
</style>
